Option Explicit
'ツールバーの名前
Private Const g_TITLE = "テストツールバー"
'ワークブックを閉じる時の処理
Private Sub Auto_Close()
'変数宣言
Dim xlAPP As Application
Dim objBar As CommandBar
'アプリケーションのオブジェクトを取得
Set xlAPP = Application
'ツールバーオブジェクトを取得
'ここでは「テストツールバー」という名前のオブジェクトを取得している
Set objBar = xlAPP.CommandBars(g_TITLE)
'ツールバーを削除
objBar.Delete
' オブジェクトを廃棄
Set objBar = Nothing
Set xlAPP = Nothing
End Sub
'ワークブックを開いた時の処理
Private Sub Auto_Open()
'変数宣言
Dim xlAPP As Application
Dim oBar As CommandBar
Dim oCont As CommandBarControl
Dim oBtn As CommandBarButton
Dim varCaption As Variant
Dim varTipText As Variant
Dim varOnAction As Variant
Dim nCnt As Integer
Dim blnFlg As Boolean
'アプリケーションオブジェクトの取得
Set xlAPP = Application
'ボタンのタイトルを設定
varCaption = Array("@テスト", "Aテスト", "Bテスト")
'ボタンにマウスが通過したときに表示されるテキスト
varTipText = Array("テスト1", "テスト2", "テスト3")
'ボタンを押下したときに呼び出すマクロ(関数名)
varOnAction = Array("BTN_1", "BTN_2", "BTN_3")
' ツールバーを追加する
Set oBar = xlAPP.CommandBars.Add(Name:=g_TITLE, Position:=msoBarTop)
'フラグの初期値設定
blnFlg = False
' ボタンを3つ追加する
For nCnt = 0 To 2
' まずボタンを指定してコントロールを追加
Set oCont = oBar.Controls.Add(Type:=msoControlButton)
'ボタンの境界を設定(1番目はボタンの境界をなし)
oCont.BeginGroup = blnFlg
'CommandBarButtonオブジェクトを取得
Set oBtn = oCont
oBtn.Style = msoButtonCaption
oBtn.Caption = varCaption(nCnt)
oBtn.TooltipText = varTipText(nCnt)
oBtn.OnAction = varOnAction(nCnt)
' 2番目以降はボタンの境界を設定
blnFlg = True
Next
'ツールバーを表示する
oBar.Visible = True
'ツールバーを非表示にできなくする
oBar.Protection = msoBarNoChangeVisible
'表示位置を一行目にする
ActiveWindow.ScrollRow = 1
' オブジェクトを廃棄
Set oBtn = Nothing
Set oCont = Nothing
Set oBar = Nothing
Set xlAPP = Nothing
End Sub
'ボタン1を押した時の処理
Private Sub BTN_1()
MsgBox "ボタン1"
End Sub
'ボタン2を押した時の処理
Private Sub BTN_2()
MsgBox "ボタン2"
End Sub
'ボタン3を押した時の処理
Private Sub BTN_3()
MsgBox "ボタン3"
End Sub
「Private Sub Auto_Open()」、「Private Sub Auto_Close()」についてですが、
この名前で関数を作成すると、それぞれブックを開いた時、閉じる時に
実行されます。